import axios from 'axios';
import {Toast} from "vant";

//有token就加没token就不加
// axios.defaults.headers.common["X-Nideshop-Token"] = token;

const instance = axios.create({
    baseURL: "http://kumanxuan1.f3322.net:8001",
    timeout: 5000,
    headers: {
        "Content-Type": "application/json; charset=utf-8",
        // "X-Nideshop-Token": localStorage.getItem("token") !== null ? localStorage.getItem("token") : "" ,
    }
})

// 请求拦截器
instance.interceptors.request.use(config => {
    // 什么时候执行这里代码？？  发送请求之前执行这里的代码
    // console.log("config为：",config); // 是一个axios帮我们封装好的关于本次请求详情的一个对象
    Toast.loading({
        message: '加载中...',
        forbidClick: true,
    });
    // ！！！在这个函数中，可以去做一些请求发出去之前的准备工作，例如把token添加请求头
    let token = localStorage.getItem("token") !== null ? localStorage.getItem("token") : "";
    if (token !== "") {
        config.headers["X-Nideshop-Token"] = token;
    }
    // 需要返回config才能成功发出请求
    return config;
}, err => {

    return Promise.reject(err)
})

// 响应拦截器
instance.interceptors.response.use(res => {
    // 什么时候执行这里的代码？？ 接收到响应之后，组件中then方法执行之前执行这里的代码
    Toast.clear();
    // 统一管理错误提示
    // 判断res.errno是不是不为0，如果不为0，  console.log(res.errmsg);
    let data = res.data
    if (data.errno !== 0) {
        Toast.loading({
            message: '加载失败...',
            forbidClick: true,
        });
        console.log("响应拦截器中：", data.errmsg || "网络出错");
    }
    return data
}, err => {
    return Promise.reject(err)
})

export default instance
